package grafica.vista;

import grafica.Forma;
import grafica.base.LineaBase;
import grafica.base.RettangoloBase;

import java.awt.Graphics;

import java.awt.geom.Area;
import java.awt.geom.Line2D;

public class LineaVista implements Forma{
	private LineaBase line;
	public LineaVista() {}
	/**
	 * @param line
	 */
	public LineaVista(LineaBase line) {
		super();
		this.line = line;
	}
	
	/**
	 * @return the line
	 */
	public LineaBase getLine() {
		return line;
	}
	/**
	 * @param line the line to set
	 */
	public void setLine(LineaBase line) {
		this.line = line;
	}
	public void draw(Graphics oggetto) {
		int x[]=new int[2];
		int y[]=new int[2];
		x[0]=line.getXi();
		x[1]=line.getXf();
		y[0]=line.getYi();
		y[1]=line.getYf();
		oggetto.drawPolyline(x,y,2);
		
	}
	//TODO mettere apposto il metodo nn funziona bene
	
	public boolean puntoAppartenenza(int x, int y) {
		int xi=line.getXi();
		int xf=((int)line.getXf());
		if((x>xi&&x<xf)||(x>xf&&x<xi)){
			double m=(line.getYf()-line.getYi())/(xf-xi);
			double yr=m*(x-xi)+line.getYi();
			if(yr==y)
				return true;
		}
		return false;
	}
	@Override
	public boolean intersezioneRettangolo(RettangoloBase istanza) {
		Area are=new Area(new Line2D.Double(this.line.getXi(),this.line.getYi(),this.line.getXf(),this.line.getYf()));
		if(are.intersects(istanza.getX(), istanza.getY(), istanza.getBase(), istanza.getAltezza()))	
			return true;
		return false;
	}
	@Override
	 public Object clone() throws CloneNotSupportedException {
		LineaVista copia=new LineaVista(new LineaBase(this.getLine().getXi(), this.getLine().getYi(), this.getLine().getXf(), this.getLine().getYf()));
		return copia;
	}
}
